//
//  RBGDetailAnnonceViewController.m
//  BateauGenerique
//
//  Created by Florent Champigny on 29/05/2014.
//  Copyright (c) 2014 Kevin De Jesus Ferreira. All rights reserved.
//

#import "RBGDetailAnnonceViewController.h"
#import "REPagedScrollView.h"
#import "UIImageView+WebCache.h"
#import "RBGServiceAnnonce.h"
#import "MWPhotoBrowser.h"
#import <MapKit/MapKit.h>
#import "RBGFavorisManager.h"
#import "RBGColorManager.h"
#import "RBGAppDelegate.h"
#import "RBGEmailController.h"
#import <MessageUI/MFMailComposeViewController.h>
#import "MWPhoto.h"
#import <MessageUI/MessageUI.h>
#import <MessageUI/MFMailComposeViewController.h>
#import "RBGNavigationBar.h"

@interface RBGDetailAnnonceViewController ()<RBGServiceAnnonceDelegate,MWPhotoDelegate,MFMailComposeViewControllerDelegate,MFMessageComposeViewControllerDelegate,MFMessageComposeViewControllerDelegate,UIAlertViewDelegate>{
    NSMutableArray *imagesPager;
    REPagedScrollView *pager;
    NSInteger page;
    RBGServiceAnnonce* serviceAnnonce;
    
    NSArray* photosMW;
    
    RBGAppDelegate *appDelegate;
    RBGFavorisManager *favorisManager;
    UIButton *boutonFavoris;
    
    UIView *loadingView;
    
}

@end

@implementation RBGDetailAnnonceViewController


- (void)viewDidLoad
{
    [super viewDidLoad];
    // Do any additional setup after loading the view from its nib.
    
    appDelegate = (RBGAppDelegate *)[[UIApplication sharedApplication] delegate];
    favorisManager = [[RBGFavorisManager alloc] init];
    
    serviceAnnonce = [[RBGServiceAnnonce alloc] init];
    serviceAnnonce.delegate = self;
    
    [serviceAnnonce getAnnonce:self.annonce.numero forType:self.typeAnnonce];
    
    loadingView = [[UIView alloc] initWithFrame:self.view.frame];
    loadingView.backgroundColor = [UIColor blackColor];
    
    {
        int x = self.view.frame.size.width/2;
        int y = self.view.frame.size.height/2;

    
        UIActivityIndicatorView *indicator = [[UIActivityIndicatorView alloc] initWithFrame:CGRectMake(x, 300, 20, 20)];
        [loadingView addSubview:indicator];
        [indicator startAnimating];
    }
    
    [self.view addSubview:loadingView];
    
}

//ajout du bouton favoris
-(void)viewWillAppear:(BOOL)animated
{
    [super viewWillAppear:animated];
    
    [RBGNavigationBar customNavigationBar:self.navigationController andTitle:@"" andBackgroundColor:appDelegate.donnees.parametres.backgroundColorUn andTextColor:appDelegate.donnees.parametres.fontColorUn];
    
    boutonFavoris = [[UIButton alloc] initWithFrame:CGRectMake(280, 6, 25, 25)];
    
    UIImage *imageFavoris = [UIImage imageNamed:@"favoris"];
    UIImage *imageFavorisHover = [UIImage imageNamed:@"favoris_hover"];
    
    UIImage* imageHover = [RBGColorManager colorImageWithColor:appDelegate.donnees.parametres.fontColorUn andImage:imageFavorisHover];
    
    [boutonFavoris setImage:imageFavoris forState:UIControlStateNormal];
    [boutonFavoris setImage:imageHover forState:UIControlStateHighlighted];
    [boutonFavoris setImage:imageHover forState:UIControlStateSelected];
    
    [boutonFavoris addTarget:self
               action:@selector(clickFavoris)
     forControlEvents:UIControlEventTouchUpInside];
    
    //charge
    boutonFavoris.highlighted = [favorisManager estFavoris:self.annonce.numero];
    
    //ajout du bouton
    [self.navigationController.navigationBar.viewForBaselineLayout addSubview:boutonFavoris];
    
    
    
    
    self.navigationItem.backBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Retour"
                                                                             style:UIBarButtonItemStyleBordered
                                                                            target:nil
                                                                            action:nil];
    
}

-(void)viewWillDisappear:(BOOL)animated
{
    [super viewWillDisappear:animated];
    
    //supprime le bouton favoris
    boutonFavoris.hidden = YES;
    boutonFavoris = nil;
}

-(void)clickFavoris
{
    NSString* numero = self.annonce.numero;
    if([favorisManager estFavoris:numero]){
        [favorisManager supprimerFavoris:numero];
    }else{
        [favorisManager ajouter:numero type:self.annonce.type];
    }
    
    //s'execute apres le click
    [[NSOperationQueue mainQueue] addOperationWithBlock:^{
        boutonFavoris.highlighted = [favorisManager estFavoris:numero];
    }];
}

-(void)chargerVue
{
    //charger viewpager
    
    self.titre.text = self.annonce.title;
    
    NSNumberFormatter *formatter = [[NSNumberFormatter alloc] init];
    [formatter setNumberStyle:NSNumberFormatterDecimalStyle];
    
    NSNumber *prixNumber = [NSNumber numberWithInteger:[self.annonce.prix integerValue]];
    NSString *prix = [formatter stringFromNumber:prixNumber];
    prix = [prix stringByReplacingOccurrencesOfString:@"," withString:@" "];
    prix = [prix stringByReplacingOccurrencesOfString:@"$" withString:@""];
    
    self.prix.text = [NSString stringWithFormat:@"%@ € %@", prix, self.annonce.taxe];
    
    [self ajouterImages];
    
    //chargement des caracteristiques
    [self chargerCaracteristiquesOuCacher];
    
    //chargement du bloc motorisation
    [self chargerMotorisationOuCacher];
    
    //chargement du bloc description
    [self chargerDescriptionOuCacher];
    
    self.tableau.frame = CGRectMake(self.tableau.frame.origin.x, self.tableau.frame.origin.y, self.tableau.frame.size.width, self.description.frame.origin.y+self.description.frame.size.height+10);
    
    //chargement du texte long
    [self chargerTexteLong];
    
    self.scrollContent.frame = CGRectMake(self.scrollContent.frame.origin.x, self.scrollContent.frame.origin.y, self.scrollContent.frame.size.width, self.texteLong.frame.origin.y+self.texteLong.frame.size.height+10);
    
    self.scroll.contentSize = self.scrollContent.frame.size;
    self.scroll.bounces = NO;
    
    
    [loadingView removeFromSuperview];
    
}

-(void)ajouterImages
{
    
    imagesPager = [NSMutableArray array];
    
    for(Lien * lien in self.annonce.photos){
        //if([lien.type isEqualToString:@"image"])
        [imagesPager addObject:lien.url];
    }
    
    
    
    CGRect pagerFrame = CGRectMake(0,0,self.layoutPagerImages.frame.size.width, self.layoutPagerImages.frame.size.height);
    
    pager = [[REPagedScrollView alloc] initWithFrame:pagerFrame];
    
    pager.pageControl.pageIndicatorTintColor = [UIColor lightGrayColor];
    pager.pageControl.currentPageIndicatorTintColor = [UIColor whiteColor];
    
    [self.layoutPagerImages addSubview:pager];
    
    
    //ajout des images
    
    int i=0;
    
    for(NSString *url in imagesPager){
        UIImageView *imageView = [[UIImageView alloc] initWithFrame:CGRectMake(0, 0, pagerFrame.size.width, pagerFrame.size.height)];
        
        [imageView setImageWithURL:[NSURL URLWithString:url]];
        [imageView setContentMode:UIViewContentModeScaleAspectFit];
        
        imageView.userInteractionEnabled = YES;
        UITapGestureRecognizer *pgr = [[UITapGestureRecognizer alloc]
                                       initWithTarget:self action:@selector(ouvrirImages)];
        [imageView addGestureRecognizer:pgr];
        imageView.tag = i++;
        
        [pager addPage:imageView];
    }
    
    //pas de scroll auto ici
    
}

-(void)ouvrirImages
{
    NSMutableArray *photos = [[NSMutableArray alloc] init];
    
    for(Lien * lien in self.annonce.photos){
        //if([lien.type isEqualToString:@"image"])
        MWPhoto *p = [MWPhoto photoWithURL:[NSURL URLWithString: lien.url]];
        [photos addObject:p];
    }
    
    photosMW = photos;
    
    // Create browser
	MWPhotoBrowser *browser = [[MWPhotoBrowser alloc] initWithPhotos:photosMW];
    [browser setControlsHidden:false];
    
    NSInteger position = pager.pageControl.currentPage;
    
    [browser setInitialPageIndex:position];
    
    
    //browser.displayActionButton = NO;
    
    //[browser setInitialPageIndex:2];
    
    // Push
    //[self.navigationController pushViewController:browser animated:YES];
    
    UINavigationController *nc = [[UINavigationController alloc] initWithRootViewController:browser];
    nc.modalTransitionStyle = UIModalTransitionStyleCrossDissolve;
    //[self presentModalViewController:nc animated:YES];
    
    [self.navigationController pushViewController:browser animated:YES];
}

- (NSUInteger)numberOfPhotosInPhotoBrowser:(MWPhotoBrowser *)photoBrowser
{
    return [photosMW count];
}

/*
- (id<MWPhoto>)photoBrowser:(MWPhotoBrowser *)photoBrowser photoAtIndex:(NSUInteger)index
{
    return [photosMW objectAtIndex:index];
}
 */


-(void)chargerCaracteristiquesOuCacher
{
    switch(self.typeAnnonce){
        case TYPE_ANNONCE_BATEAU_A_MOTEUR :
        case TYPE_ANNONCE_VOILIER :
        case TYPE_ANNONCE_SEMI_RIGIDE :
        case TYPE_ANNONCE_MOTEUR :
        case TYPE_ANNONCE_REMORQUES :
        case TYPE_ANNONCE_LOCATION :
        {
            [self chargerCaracteristiques];
        }break;
        default:
        {
            self.caracteristiques.frame = CGRectMake(self.caracteristiques.frame.origin.x, self.caracteristiques.frame.origin.y, self.caracteristiques.frame.size.width, 0);
            self.caracteristiques.hidden = YES;
        }
            
    }
}

-(void)chargerCaracteristiques
{
    NSMutableArray *labels = [NSMutableArray array];
    NSMutableArray *values = [NSMutableArray array];
    
    
    
    switch(self.typeAnnonce){
            
            
            //> Pour Bateaux, Voiliers, Semi-Rigides
            //ZONE CARACTERISTIQUES
            //Année / Catégorie / Etat / Longueur / Largeur / Nb. Cabine / Nb Couchage / Nb Salle de Bain / Garantie
            
            
        case TYPE_ANNONCE_BATEAU_A_MOTEUR :
        case TYPE_ANNONCE_VOILIER :
        case TYPE_ANNONCE_SEMI_RIGIDE :
        {
            if(self.annonce.annee != nil && self.annonce.annee.length>0){
                [labels addObject:@"Année"];
                [values addObject:self.annonce.annee];
            }
            if(self.annonce.categorie != nil && self.annonce.categorie.length>0){
                [labels addObject:@"Catégorie"];
                [values addObject:self.annonce.categorie];
            }
            if(self.annonce.etat != nil && self.annonce.etat.length>0){
                [labels addObject:@"Etat"];
                [values addObject:self.annonce.etat];
            }
            if(self.annonce.longueur != nil && self.annonce.longueur.length>0){
                [labels addObject:@"Longueur"];
                [values addObject:self.annonce.longueur];
            }
            if(self.annonce.largeur != nil && self.annonce.largeur.length>0){
                [labels addObject:@"Largeur"];
                [values addObject:self.annonce.largeur];
            }
            if(self.annonce.nbCabines != nil && self.annonce.nbCabines.length>0){
                [labels addObject:@"Nb. Cabine"];
                [values addObject:self.annonce.nbCabines];
            }
            if(self.annonce.nbCouchettes != nil && self.annonce.nbCouchettes.length>0){
                [labels addObject:@"Nb. Couchage"];
                [values addObject:self.annonce.nbCouchettes];
            }
            if(self.annonce.nbSallesDeBain != nil && self.annonce.nbSallesDeBain.length>0){
                [labels addObject:@"Nb. Salle de Bain"];
                [values addObject:self.annonce.nbSallesDeBain];
            }
            if(self.annonce.garantie != nil && self.annonce.garantie.length>0){
                [labels addObject:@"Garantie"];
                [values addObject:self.annonce.garantie];
            }
        }break;
            
            //> Pour Locations
            //ZONE CARACTERISTIQUES
            //Port de Départ (Lieu de Nav) / Année / Catégorie / Longueur / Largeur / Nb. Cabine / Nb Couchage / Nb Salle de Bain
            
        case TYPE_ANNONCE_LOCATION :
        {
            if(self.annonce.portDeDepart != nil && self.annonce.portDeDepart.length>0){
                [labels addObject:@"Port de Départ"];
                [values addObject:self.annonce.portDeDepart];
            }
            if(self.annonce.annee != nil && self.annonce.annee.length>0){
                [labels addObject:@"Année"];
                [values addObject:self.annonce.annee];
            }
            if(self.annonce.categorie != nil && self.annonce.categorie.length>0){
                [labels addObject:@"Catégorie"];
                [values addObject:self.annonce.categorie];
            }
            if(self.annonce.longueur != nil && self.annonce.longueur.length>0){
                [labels addObject:@"Longueur"];
                [values addObject:self.annonce.longueur];
            }
            if(self.annonce.largeur != nil && self.annonce.largeur.length>0){
                [labels addObject:@"Largeur"];
                [values addObject:self.annonce.largeur];
            }
            if(self.annonce.nbCabines != nil && self.annonce.nbCabines.length>0){
                [labels addObject:@"Nb. Cabine"];
                [values addObject:self.annonce.nbCabines];
            }
            if(self.annonce.nbCouchettes != nil && self.annonce.nbCouchettes.length>0){
                [labels addObject:@"Nb. Couchage"];
                [values addObject:self.annonce.nbCouchettes];
            }
            if(self.annonce.nbSallesDeBain != nil && self.annonce.nbSallesDeBain.length>0){
                [labels addObject:@"Nb. Salle de Bain"];
                [values addObject:self.annonce.nbSallesDeBain];
            }
        }break;
            
            //> Pour Moteurs HB/IB
            //ZONE CARACTERISTIQUES
            //Année / Catégorie / Etat / Garantie
            
        case TYPE_ANNONCE_MOTEUR :
        {
            if(self.annonce.annee != nil && self.annonce.annee.length>0){
                [labels addObject:@"Année"];
                [values addObject:self.annonce.annee];
            }
            if(self.annonce.categorie != nil && self.annonce.categorie.length>0){
                [labels addObject:@"Catégorie"];
                [values addObject:self.annonce.categorie];
            }
            if(self.annonce.etat != nil && self.annonce.etat.length>0){
                [labels addObject:@"Etat"];
                [values addObject:self.annonce.etat];
            }
            if(self.annonce.garantie != nil && self.annonce.garantie.length>0){
                [labels addObject:@"Garantie"];
                [values addObject:self.annonce.garantie];
            }
        }break;
            
            //> Pour Places de Port
            //ZONE CARACTERISTIQUES
            //Longueur / Largeur / Type / Département
            
            
        case TYPE_ANNONCE_PLACE_DE_PORT:
        {
            if(self.annonce.longueur != nil && self.annonce.longueur.length>0){
                [labels addObject:@"Longueur"];
                [values addObject:self.annonce.longueur];
            }
            if(self.annonce.largeur != nil && self.annonce.largeur.length>0){
                [labels addObject:@"Largeur"];
                [values addObject:self.annonce.largeur];
            }
            if(self.annonce.type != nil && self.annonce.type.length>0){
                [labels addObject:@"Type"];
                [values addObject:self.annonce.type];
            }
            if(self.annonce.departement != nil && self.annonce.departement.length>0){
                [labels addObject:@"Département"];
                [values addObject:self.annonce.departement];
            }
            
        }break;
            
            //> Pour Remorques
            //ZONE CARACTERISTIQUES
            //PTAC / Longueur
        case TYPE_ANNONCE_REMORQUES:
        {
            if(self.annonce.ptac != nil && self.annonce.ptac.length>0){
                [labels addObject:@"PTAC"];
                [values addObject:self.annonce.ptac];
            }
            if(self.annonce.longueur != nil && self.annonce.longueur.length>0){
                [labels addObject:@"Longueur"];
                [values addObject:self.annonce.longueur];
            }
        }break;
    }
    
    [self afficherTableauDans:self.caracteristiquesLayout labels:labels values:values container:self.caracteristiques];
    
}

-(void)chargerMotorisationOuCacher
{
    
    int distanceCaracteristiques = 10;
    
    //replace par rapport a motorisation
    self.motorisation.frame = CGRectMake(self.motorisation.frame.origin.x, self.caracteristiques.frame.origin.y + self.caracteristiques.frame.size.height + distanceCaracteristiques, self.motorisation.frame.size.width, self.motorisation.frame.size.height);
    
    switch(self.typeAnnonce){
        case TYPE_ANNONCE_BATEAU_A_MOTEUR :
        case TYPE_ANNONCE_VOILIER :
        case TYPE_ANNONCE_SEMI_RIGIDE :
        case TYPE_ANNONCE_MOTEUR :
        case TYPE_ANNONCE_REMORQUES :
        case TYPE_ANNONCE_LOCATION :
        {
            [self chargerMotorisation];
        }break;
        default:
        {
            self.motorisation.frame = CGRectMake(self.motorisation.frame.origin.x, self.motorisation.frame.origin.y, self.motorisation.frame.size.width, 0);
            self.motorisation.hidden = YES;
        }
            
    }
}

-(void)chargerMotorisation
{
    NSMutableArray *labels = [NSMutableArray array];
    NSMutableArray *values = [NSMutableArray array];
    
    
    
    switch(self.typeAnnonce){
            
            
            //> Pour Bateaux, Voiliers, Semi-Rigides
            //ZONE MOTORISATION
            //Motorisation / Année du moteur / Marque / Puissance / Propulsion / Nb. Heure
            
            
        case TYPE_ANNONCE_BATEAU_A_MOTEUR :
        case TYPE_ANNONCE_VOILIER :
        case TYPE_ANNONCE_SEMI_RIGIDE :
        {
            if(self.annonce.moteur != nil){
                if(self.annonce.moteur.infoMoteur != nil && self.annonce.moteur.infoMoteur.length>0){
                    [labels addObject:@"Motorisation"];
                    [values addObject:self.annonce.moteur.infoMoteur];
                }
                if(self.annonce.moteur.anneeMoteur != nil && self.annonce.moteur.anneeMoteur.length>0){
                    [labels addObject:@"Année du moteur"];
                    [values addObject:self.annonce.moteur.anneeMoteur];
                }
                if(self.annonce.moteur.marqueMoteur != nil && self.annonce.moteur.marqueMoteur.length>0){
                    [labels addObject:@"Marque"];
                    [values addObject:self.annonce.moteur.marqueMoteur];
                }
                if(self.annonce.moteur.puissanceMoteur != nil && self.annonce.moteur.puissanceMoteur.length>0){
                    [labels addObject:@"Puissance"];
                    [values addObject:self.annonce.moteur.puissanceMoteur];
                }
                if(self.annonce.moteur.propulsion != nil && self.annonce.moteur.propulsion.length>0){
                    [labels addObject:@"Propulsion"];
                    [values addObject:self.annonce.moteur.propulsion];
                }
                if(self.annonce.moteur.heureMoteur != nil && self.annonce.moteur.heureMoteur.length>0){
                    [labels addObject:@"Nb. Heure"];
                    [values addObject:self.annonce.moteur.heureMoteur];
                }
            }
        }break;
            
            //> Pour Locations
            //ZONE MOTORISATION
            //Motorisation / Infos Moteur / Energie / Année du moteur / Propulsion / Nb. Heures
            
        case TYPE_ANNONCE_LOCATION :
        {
            if(self.annonce.moteur != nil){
                if(self.annonce.moteur.infoMoteur != nil && self.annonce.moteur.infoMoteur.length>0){
                    [labels addObject:@"Motorisation"];
                    [values addObject:self.annonce.moteur.infoMoteur];
                }
                if(self.annonce.moteur.anneeMoteur != nil && self.annonce.moteur.anneeMoteur.length>0){
                    [labels addObject:@"Infos Moteur"];
                    [values addObject:self.annonce.moteur.anneeMoteur];
                }
                if(self.annonce.moteur.energie != nil && self.annonce.moteur.energie.length>0){
                    [labels addObject:@"Energie"];
                    [values addObject:self.annonce.moteur.energie];
                }
                if(self.annonce.moteur.anneeMoteur != nil && self.annonce.moteur.anneeMoteur.length>0){
                    [labels addObject:@"Année du moteur"];
                    [values addObject:self.annonce.moteur.anneeMoteur];
                }
                if(self.annonce.moteur.propulsion != nil && self.annonce.moteur.propulsion.length>0){
                    [labels addObject:@"Propulsion"];
                    [values addObject:self.annonce.moteur.propulsion];
                }
                if(self.annonce.moteur.heureMoteur != nil && self.annonce.moteur.heureMoteur.length>0){
                    [labels addObject:@"Nb. Heure"];
                    [values addObject:self.annonce.moteur.heureMoteur];
                }
            }
        }break;
            
            //> Pour Moteurs HB/IB
            //ZONE MOTORISATION
            //Motorisation / Infos Moteur /  Année / Nb. Heures
            
        case TYPE_ANNONCE_MOTEUR :
        {
            if(self.annonce.moteur != nil){
                if(self.annonce.moteur.infoMoteur != nil && self.annonce.moteur.infoMoteur.length>0){
                    [labels addObject:@"Motorisation"];
                    [values addObject:self.annonce.moteur.infoMoteur];
                }
                if(self.annonce.moteur.puissanceMoteur != nil && self.annonce.moteur.puissanceMoteur.length>0){
                    [labels addObject:@"Puissance du moteur"];
                    [values addObject:self.annonce.moteur.puissanceMoteur];
                }
                if(self.annonce.moteur.heureMoteur != nil && self.annonce.moteur.heureMoteur.length>0){
                    [labels addObject:@"Nb. Heure"];
                    [values addObject:self.annonce.moteur.heureMoteur];
                }
            }
        }break;
            
    }
    
    [self afficherTableauDans:self.motorisationLayout labels:labels values:values container:self.motorisation];
    
}

-(void)chargerDescriptionOuCacher
{
    
    int distanceMotorisation = 10;
    
    CGRect motifisationFrame = self.motorisation.frame;
    
    //replace par rapport a motorisation
    self.description.frame = CGRectMake(self.description.frame.origin.x, motifisationFrame.origin.y + motifisationFrame.size.height + distanceMotorisation, self.description.frame.size.width, self.description.frame.size.height);
    
    switch(self.typeAnnonce){
        case TYPE_ANNONCE_BATEAU_A_MOTEUR :
        case TYPE_ANNONCE_VOILIER :
        case TYPE_ANNONCE_SEMI_RIGIDE :
        case TYPE_ANNONCE_MOTEUR :
        case TYPE_ANNONCE_REMORQUES :
        case TYPE_ANNONCE_LOCATION :
        {
            [self chargerDescription];
        }break;
        default:
        {
            self.description.frame = CGRectMake(self.description.frame.origin.x, self.description.frame.origin.y, self.description.frame.size.width, 0);
            self.description.hidden = YES;
        }
            
    }
}

-(void)chargerDescription
{
    NSMutableArray *labels = [NSMutableArray array];
    NSMutableArray *values = [NSMutableArray array];
    
    switch(self.typeAnnonce){
            
            
            //> Pour Bateaux, Voiliers, Semi-Rigides
            //ZONE DESCRIPTION
            //Equipements / Electronique
            
            
            
        case TYPE_ANNONCE_BATEAU_A_MOTEUR :
        case TYPE_ANNONCE_VOILIER :
        case TYPE_ANNONCE_SEMI_RIGIDE :
        {
            if(self.annonce.equipement != nil && [self.annonce.equipement count]>0){
                [labels addObject:@"Equipements"];
                [values addObject:[self arrayToString:self.annonce.equipement]];
            }
            if(self.annonce.electroniques != nil && [self.annonce.electroniques count]>0){
                [labels addObject:@"Electronique"];
                [values addObject:[self arrayToString:self.annonce.electroniques]];
            }
        }break;
            
            //> Pour Locations
            //ZONE DESCRIPTION
            //Equipements / Electronique
            
        case TYPE_ANNONCE_LOCATION :
        {
            if(self.annonce.equipement != nil && [self.annonce.equipement count]>0){
                [labels addObject:@"Equipements"];
                [values addObject:[self arrayToString:self.annonce.equipement]];
            }
            if(self.annonce.electroniques != nil && [self.annonce.electroniques count]>0){
                [labels addObject:@"Electronique"];
                [values addObject:[self arrayToString:self.annonce.electroniques]];
            }
        }break;
    }
    
    [self afficherTableauDans:self.descriptionLayout labels:labels values:values container:self.description];
    
}

-(void)chargerTexteLong
{
    
    int distanceTableau = 10;
    
    //TEST
    NSString *texte = self.annonce.commentaire;
    
    //place en fonction de la description
    self.texteLong.frame = CGRectMake(self.texteLong.frame.origin.x, self.tableau.frame.origin.y+self.tableau.frame.size.height + distanceTableau, self.texteLong.frame.size.width, self.texteLong.frame.size.height);
    
    if(texte != nil && texte.length > 0){
        self.texteLong.text = texte ;
        
        //adapte la vue en fonction de son contenu
        self.texteLong.lineBreakMode = NSLineBreakByWordWrapping;
        self.texteLong.numberOfLines = 0;
        [self.texteLong sizeToFit];
        
    }else{
        self.texteLong.frame = CGRectMake(self.texteLong.frame.origin.x, self.texteLong.frame.origin.y, self.texteLong.frame.size.width, 0);
    }
}

-(NSString*)arrayToString:(NSArray*)array
{
    NSMutableString *string = [[NSMutableString alloc] init];
    
    if(array != nil && [array count]>0){
        
        
        int nb = [array count];
        for(int i=0;i<nb;++i){
            [string appendString:[array objectAtIndex:i]];
            if(i != nb-1)
                [string appendString:@", "];
        }
        
    }
    
    return string;
}


-(void)afficherTableauDans:(UIView*)layout labels:(NSArray*)labels values:(NSArray*)values container:(UIView*)container
{
    BOOL test = false;
    if(test){
        
        labels = @[@"1",@"2",@"3"];
        values = @[@"texte1",@"texte2",@"texte3"];
        
    }
    
    int lignes = MIN([labels count], [values count]);
    
    if(lignes == 0){
        layout.frame = CGRectMake(layout.frame.origin.x, layout.frame.origin.y, layout.frame.size.width, 0);
        container.frame = CGRectMake(container.frame.origin.x, container.frame.origin.y, container.frame.size.width, 0);
        container.hidden = YES;
    }
    else{
        
        int hauteur = 27;
        int largeurLabel = 110;
        
        int y = 0;
        
        CGRect layoutRect = CGRectMake(layout.frame.origin.x, layout.frame.origin.y, layout.frame.size.width, (lignes+2)*hauteur);
        
        layout.frame = layoutRect;
        
        UIColor *lineColor = [UIColor colorWithRed:0.85 green:0.85 blue:0.85 alpha:1.0];
        
        for(int i=0;i<lignes;++i){
            if(i == 0){} //ne pas afficher de ligne
            else{
                UIView* ligneHorizontale = [[UIView alloc] initWithFrame:CGRectMake(10,y,layout.frame.size.width,1)];
                ligneHorizontale.backgroundColor = lineColor;
                
                [layout addSubview:ligneHorizontale];
            }
            {
                UIFont *font = [UIFont fontWithName:@"AvenirNext-Regular" size:12];
                
                
                UILabel *label = [[UILabel alloc] initWithFrame:CGRectMake(10,y,largeurLabel,hauteur)];
                label.text = [labels objectAtIndex:i];
                label.font = [UIFont systemFontOfSize:12];
                label.backgroundColor = [UIColor clearColor];
                
                label.font =  font;
                UILabel *valeur = [[UILabel alloc] initWithFrame:CGRectMake(largeurLabel+10,y,320-largeurLabel,hauteur)];
                valeur.text = [values objectAtIndex:i];
                valeur.font = [UIFont systemFontOfSize:12];
                valeur.backgroundColor = [UIColor clearColor];
                
                label.font = font;
                [layout addSubview:label];
                [layout addSubview:valeur];
                
                y += hauteur;
                
            }
        }
        
        UIView* ligneVerticale = [[UIView alloc] initWithFrame:CGRectMake(largeurLabel+5,0,1,layout.frame.size.height)];
        ligneVerticale.backgroundColor = lineColor;
        
        [layout addSubview:ligneVerticale];
        
        
        
        CGRect nouvelleFrameContainer = CGRectMake(container.frame.origin.x, container.frame.origin.y, container.frame.size.width, layout.frame.size.height + 10);
        
        container.frame = nouvelleFrameContainer;
    }
}


- (IBAction)nousContacter:(id)sender {
}

- (IBAction)contacterPhone:(id)sender {
    
    if(self.annonce.vendeur != nil && self.annonce.vendeur.tel1 != nil){
    
        UIAlertView *myAlert = [[UIAlertView alloc]
                            initWithTitle:@"Appeller"
                                message:[NSString stringWithFormat:@"Souhaitez vous appeler le %@ ?",self.annonce.vendeur.tel1 ]
                            delegate:self
                            cancelButtonTitle:@"Non"
                            otherButtonTitles:@"Oui",nil];
        myAlert.tag = 0;
        [myAlert show];
        
    }
}

- (void)alertView:(UIAlertView *)alertView clickedButtonAtIndex:(NSInteger)buttonIndex{
    if(alertView.tag == 0){
        if(buttonIndex == 1){
            if(self.annonce.vendeur != nil && self.annonce.vendeur.tel1 != nil){
                NSString *phoneNumber = [@"tel://" stringByAppendingString:self.annonce.vendeur.tel1];
                [[UIApplication sharedApplication] openURL:[NSURL URLWithString:phoneNumber]];
                }
            }
        }
    else if(alertView.tag == 1){
        if(buttonIndex == 1){
            MFMessageComposeViewController *controller = [[MFMessageComposeViewController alloc] init];
            if([MFMessageComposeViewController canSendText])
            {
                
                controller.delegate = self;
                
                controller.body = [NSString stringWithFormat:@" J’ai vu un %@ sur l’application App Store de %@, Hesites pas à la télécharger ! ",self.annonce.title,NOM_APPLICATION];
                controller.messageComposeDelegate = self;
                [self presentModalViewController:controller animated:YES];
            }
        }else if(buttonIndex == 2){
            NSLog(@"Mail");
            // Email Subject
            NSString *emailTitle = NOM_APPLICATION;
            // Email Content
            NSString *messageBody = [NSString stringWithFormat:@" J’ai vu un %@ sur l’application App Store de %@, Hesites pas à la télécharger ! ",self.annonce.title,NOM_APPLICATION];
            
            MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
            mc.mailComposeDelegate = self;
            [mc setSubject:emailTitle];
            [mc setMessageBody:messageBody isHTML:NO];
            
            // Present mail view controller on screen
            [self presentViewController:mc animated:YES completion:NULL];
        }
    }
}

- (IBAction)contacterMail:(id)sender {
    if(self.annonce.vendeur != nil && self.annonce.vendeur.email != nil && self.annonce.vendeur.email.length > 0){
        NSLog(@"Mail");
      
        
        RBGEmailController * emailController = [[RBGEmailController alloc]init];
        emailController.message = [NSString stringWithFormat:@"Bonjour,\n\nJe souhaiterai avoir des informations complémentaires concernant votre %@ à %@EUR \nMerci de me recontacter par mail.\nCordialement",self.annonce.title,self.annonce.prix];
        
        emailController.titre =[NSString stringWithFormat:@"Mail provenant de votre appli iOS %@",self.annonce.vendeur.nom];
        
        switch(self.typeAnnonce){
                
                
                //> Pour Bateaux, Voiliers, Semi-Rigides
                //ZONE DESCRIPTION
                //Equipements / Electronique
                
                
                
            case TYPE_ANNONCE_BATEAU_A_MOTEUR :
            case TYPE_ANNONCE_VOILIER :
            case TYPE_ANNONCE_SEMI_RIGIDE :
            {
                emailController.type = @"bateau";

            }break;
            
            case TYPE_ANNONCE_ACCESSOIRE :
            case TYPE_ANNONCE_PLACE_DE_PORT :
            case TYPE_ANNONCE_REMORQUES :
            {
                emailController.type = @"divers";
                
            }break;
            case TYPE_ANNONCE_LOCATION :
            {
                emailController.type = @"location";

            }break;
                
            case TYPE_ANNONCE_MOTEUR :
            {
                emailController.type = @"moteur";

            }break;
        }
        
        emailController.idad = self.annonce.numero;
        emailController.toRecipents =[NSArray arrayWithObject:self.annonce.vendeur.email];
        emailController.annonceController = self;
        [self.navigationController pushViewController:emailController animated:YES];
        
        /*
        // Email Subject
        NSString *emailTitle = [NSString stringWithFormat:@"Mail provenant de votre appli iOS %@",self.annonce.vendeur.nom];
        // Email Content
       
        
        // To address
        NSArray *toRecipents = [NSArray arrayWithObject:self.annonce.vendeur.email];
        
        MFMailComposeViewController *mc = [[MFMailComposeViewController alloc] init];
        mc.mailComposeDelegate = self;
        [mc setSubject:emailTitle];
        [mc setMessageBody:messageBody isHTML:NO];
        [mc setToRecipients:toRecipents];
        
        // Present mail view controller on screen
        [self presentViewController:mc animated:YES completion:NULL];
         
         */
    }
}

- (IBAction)contacterGps:(id)sender {
    
    if(self.annonce.vendeur != nil && self.annonce.vendeur.gpsLatitude != nil && self.annonce.vendeur.gpsLongitude != nil){
        
        // Check for iOS 6
        Class mapItemClass = [MKMapItem class];
        if (mapItemClass && [mapItemClass respondsToSelector:@selector(openMapsWithItems:launchOptions:)])
        {
            
            double lat = [self.annonce.vendeur.gpsLatitude doubleValue];
            double lng = [self.annonce.vendeur.gpsLongitude doubleValue];
            
            // Create an MKMapItem to pass to the Maps app
            CLLocationCoordinate2D coordinate =
            CLLocationCoordinate2DMake(lat, lng);
            MKPlacemark *placemark = [[MKPlacemark alloc] initWithCoordinate:coordinate
                                                           addressDictionary:nil];
            MKMapItem *mapItem = [[MKMapItem alloc] initWithPlacemark:placemark];
            [mapItem setName:self.annonce.vendeur.nom];
            // Pass the map item to the Maps app
            [mapItem openInMapsWithLaunchOptions:nil];
        }
    }
}

- (IBAction)share:(id)sender {
    
    UIAlertView *myAlert = [[UIAlertView alloc]
                            initWithTitle:@"Partager"
                            message:[NSString stringWithFormat:@"Partager l'annonce ?",self.annonce.vendeur.tel1 ]
                            delegate:self
                            cancelButtonTitle:@"Non"
                            otherButtonTitles:@"Envoyer par SMS", @"Envoyer par mail",nil];
    myAlert.tag = 1;
    [myAlert show];
    
    
}

#pragma mark - MFMailComposeViewControllerDelegate
- (void)mailComposeController:(MFMailComposeViewController *)controller didFinishWithResult:(MFMailComposeResult)result error:(NSError *)error{
    
    [self dismissViewControllerAnimated:YES completion:nil];
    
}

#pragma mark - MFMessageComposeViewControllerDelegate
- (void)messageComposeViewController:(MFMessageComposeViewController *)controller didFinishWithResult:(MessageComposeResult)result
{
    [self dismissViewControllerAnimated:YES completion:nil];
}


#pragma mark - RBGServiceAnnonceDelegate

- (void) receiveDonneesAnnonce:(id)donnees
                      andType :(int)typeDonnees
{
    if(donnees != nil)
        self.annonce = donnees;
    [self chargerVue];
}

- (void) receiveErreurAnnonce:(int)statut
{
    [UIApplication sharedApplication].networkActivityIndicatorVisible = NO;
    
    UIAlertView *alert = [[UIAlertView alloc]
                          
                          initWithTitle:@"Erreur"
                          message:@"Erreur réseau : votre téléphone ne peut pas accéder aux informations"
                          delegate:self
                          cancelButtonTitle:@"Ok"
                          otherButtonTitles:nil];
    
    [alert show];
}
@end
